小编Neo*_*Neo的帖子

SIMD与矢量架构

SIMD和矢量处理器有什么区别?我目前的理解是矢量处理是SIMD的一个子集.但我被告知"SIMD不仅限于矢量",我不知道究竟是什么意思.有具体的例子吗?

另外,为什么标量体系结构优先于矢量体系结构?是因为它们更易于实施和编程吗?

我知道我们有SISD(常规1核CPU),SIMD(单核/多核处理器上的SSE扩展),MIMD(错误...大概类似MPI,我猜,所以集群!)和MISD(已被视为不切实际的/不可行).除此之外,我读过的其他一些东西是矢量处理和超标量体系结构.我错过并应该了解的任何新架构?谢谢!

simd computer-architecture

9
推荐指数
1
解决办法
8412
查看次数

核心数据自定义迁移

我的旧核心数据模型有一个NSDate字段,我想将其更改为NSNumber.我在SO和其他博客上阅读了Apple文档和几个类似的问题(请参阅问题末尾的参考资料)

但无论我做什么,我都会遇到同样的错误:

因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因是:'映射和源/目标模型之间不匹配'

我只有2个版本的模型,我已经一次又一次地验证了源模型和目标模型是正确的.

我甚至放弃了所有更改并重新创建了一个新模型,映射和实体(NSManagedObject子类).我现在已经坚持了近2天,并且不知道我在做什么.关于我做错的任何指示都将不胜感激.

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator; 
    }

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Old.sqlite"];

    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

    NSString *sourceStoreType = NSSQLiteStoreType;
    NSURL *sourceStoreURL = storeURL;

    NSURL *destinationStoreURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"New.sqlite"];
    NSString *destinationStoreType = NSSQLiteStoreType;
    NSDictionary *destinationStoreOptions = nil;

    NSDictionary *sourceMetadata =
    [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:sourceStoreType
                                                               URL:sourceStoreURL
                                                             error:&error];

    if (sourceMetadata == nil) {
        NSLog(@"source metadata is nil");
    }

    NSManagedObjectModel *destinationModel …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c core-data-migration ios

9
推荐指数
1
解决办法
1994
查看次数

iOS自动完成功能

大多数人通过自动完成的意思是该应用程序具有textview/searchbar /其他接受用户输入的内容.附加到此组件的是一个tableview,它根据用户输入不断更新.这是一个研究得很好的主题,由于UISearchDisplay控制器,现在相对容易实现.

现在这就是我想要的.当用户在UISearchBar中输入一些文本时,将没有searchdisplaycontroller.相反,我希望应用程序在桌面上执行类似Google Instant的操作.也就是说,如果我输入"Goog",搜索栏应显示Goog*le.所以建议"le"应该比用户输入字符串Google的其他字体更轻.所以我不想要自动推荐功能,我想要一个自动完成功能.

有关如何做到这一点的任何想法?

谢谢!

autocomplete uisearchbar ios

7
推荐指数
2
解决办法
1万
查看次数

找到满足某个条件的子集

我有几个数字数组(数组的每个元素只能取值0或1),就像这样

v1: 1; 0; 0; 1; 1; 
v2: 0; 1; 0; 0; 1; 
v3: 1; 1; 0; 1; 0; 
v4: 1; 0; 0; 1; 0; 
v5: 1; 1; 0; 1; 1; 
v6: 1; 1; 0; 1; 1; 

我希望找到这样的子集,当数组求和时,得到的数组具有2的倍数的单个元素.例如,v1 + v2 + v3得到的结果数组为2,2,0,2,2.结果数组可以具有2的倍数的任何值.

另一个例子:

v1: 1, 1, 1, 0, 1, 0
v2: 0, 0, 1, 0, 0, 0
v3: 1, 0, 0, 0, 0, 0
v4: 0, 0, 0, 1, 0, 0
v5: 1, 1, 0, 0, 1, 0
v6: 0, …

c algorithm subset-sum np

7
推荐指数
1
解决办法
570
查看次数

使用OpenMP进行并行加速

我有两种测量指标的方案,如计算时间和并行加速(sequential_time/parallel_time).

场景1:

顺序时间测量:

startTime=omp_get_wtime();  
for loop computation  
endTime=omp_get_wtime();  
seq_time = endTime-startTime;
Run Code Online (Sandbox Code Playgroud)

并行时间测量:

startTime = omp_get_wtime();  
for loop computation (#pragma omp parallel for reduction (+:pi) private (i)  
for (blah blah) {   
    computation;   
}  
endTime=omp_get_wtime();  
paralleltime = endTime-startTime; 

speedup = seq_time/paralleltime;
Run Code Online (Sandbox Code Playgroud)

场景2:

顺序时间测量:

for loop{  
startTime=omp_get_wtime();  
   computation;  
endTime=omp_get_wtime();  
seq_time += endTime-startTime;  
}
Run Code Online (Sandbox Code Playgroud)

并行时间测量:

for loop computation (#pragma omp parallel for reduction (+:pi, paralleltime) private (i,startTime,endTime)  
for (blah blah) {  
    startTime=omp_get_wtime();  
    computation;  
    endTime=omp_get_wtime();  
    paralleltime = endTime-startTime;  
}  

speedup = seq_time/paralleltime;
Run Code Online (Sandbox Code Playgroud)

我知道场景2不是最好的生产代码,但我认为它通过忽略openmp生成和管理(线程上下文切换)几个线程所涉及的开销来衡量实际的理论性能.所以它会给我们一个线性加速.但是场景1考虑了产生和管理线程所涉及的开销.

我的疑问是这样的:在场景1中,我得到一个开始线性的加速,但随着我们移动到更高的迭代次数逐渐减少.在场景2中,无论迭代次数如何,我都会获得完整的线性加速.我被告知,实际上,无论迭代次数如何,场景1都会给我一个线性加速.但我认为它不会因为线程管理导致的高过载.有人可以向我解释为什么我错了吗?

谢谢!对于相当长的帖子感到抱歉.

parallel-processing performance openmp

5
推荐指数
2
解决办法
5082
查看次数

在Linux/MacOSX中运行C程序

这是另一个(可能)noob问题.让我们假设我有一个用C编写的简单的1文件程序(称为myProg.c).当我想在Linux/MacOSX中编译这个程序时,我输入"gcc -o haha​​ myProg.c".生成的可执行文件现在名为"haha".当我想运行这个程序时,我需要在控制台中输入"./haha".

我还需要做什么来停止输入"./"?如何通过输入"haha"来确保我的程序将被调用?我检查了文件"haha"的权限,它是可执行的.我是否正确认为"./"表示可执行文件的路径,即文件存在于当前目录(".")中?

c

1
推荐指数
1
解决办法
156
查看次数