由于RBPI(Raspberry Pi)具有非常低的功耗和非常低的生产价格,这意味着可以构建一个非常大的集群.我不确定,但是一个100000 RBPI的集群会占用很少的电力和很少的空间.
现在我认为它在FLOPS或其他类型的计算测量方面可能没有现有的超级计算机那么强大,但它能否允许更好的神经网络模拟?
我不确定是否说"1 CPU = 1神经元"是一个合理的陈述,但似乎足够有效.
那么它是否意味着这样的聚类对神经网络模拟更有效,因为它比其他经典聚类更加平行?
如果你有一个返回整数的C函数,你可以写一个这样的语句:
MyInt &= MyFunc();
Run Code Online (Sandbox Code Playgroud)
...我们使用按位AND赋值运算符.
问题是:即使MyInt等于零,MyFunc()也能保证执行吗?
Likwise,如果我们使用按位OR赋值运算符(| =),那么MyFunc()总会被执行,即使MyInt设置为全部吗?
换句话说:对于按位运算符,C是否允许延迟评估?
我正在研究嵌入式系统,所以内存对我来说很宝贵.
一个经常出现的问题是,在尝试为它编译程序时,我的内存空间已经用完了.这通常通过限制可能占用大量空间的typedef等的数量来解决.
有一个宏生成器,我用它来创建一个包含很多#define的文件.其中一些是简单的值,另一些是边界检查
即
#define SIGNAL1 (float)0.03f
#define SIGNAL1_ISVALID(value) ((value >= 0.0f) && (value <= 10.0f))
Run Code Online (Sandbox Code Playgroud)
现在,我没有使用所有这些定义.我使用了一些,但实际上并不是大多数.我被告知,如果不使用它们,它们实际上并没有占用任何记忆,但我不确定这一点.我希望通过删除未使用的那些我可以释放一些额外的内存(但同样,我被告知这是毫无意义的).
未使用的#define会占用任何内存空间吗?
char byte_to_ascii(char value_to_convert, volatile char *converted_value) {
if (value_to_convert < 10) {
return (value_to_convert + 48);
} else {
char a = value_to_convert / 10;
double x = fmod((double)value_to_convert, 10.0);
char b = (char)x;
a = a + 48;
b = b + 48;
*converted_value = a;
*(converted_value+1) = b;
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
此函数的目的是获取0到99的unsigned char值,并返回它在0-9的情况下的ascii等效值,或者操作一个小的全局字符数组,该数组可以在函数完成后从调用代码引用.
我问这个问题是因为同一供应商的两个编译器以不同的方式解释这个代码.
编写此代码是为了将通过RS485发送的地址字节解析为可以轻松传递给send-lcd-string函数的字符串.
该代码是为PIC18架构(8位uC)编写的.
问题是特定编译器的免费/评估版本生成了完美的汇编代码,但在遭受性能损失的情况下工作,但是付费且假设优越的编译器能够更高效地生成代码,代价是能够引用我所有字节数组的地址用于驱动我的液晶显示器上的图形.
我知道我通过使用专有的编译器为一个不太典型的架构在水中放了很多泥,但我希望那里的人有一些建议.
谢谢.
我是C开发的软件工程方面的新手; 有没有人有一个很好的指导如何为C项目(特别是嵌入式)设计错误跟踪或错误控制系统?谈论C库的错误跟踪也会有所帮助.
我想使用printf在ARM微控制器的串行端口上显示文本.我无法这样做.任何帮助表示赞赏.
我的init_serial看起来像这样
void init_serial (void)
{
PINSEL0 = 0x00050000; /* Enable RXD1 TxD1 */
U1LCR = 0x00000083; /*8 bits, 1 Stop bit */
U1DLL = 0x000000C2; /*9600 Baud Rate @12MHz VPB Clock */
U1LCR = 0x00000003; /* DLAB=0*/
}
Run Code Online (Sandbox Code Playgroud)
这显然是错的.