Runge-Kutta-yöntemini kullanarak büyük bir birleştirilmiş ana denklemin dinamiklerini hesaplamak için bir kod yazdım. Kod, her adımın bağımsız olduğu bir sürü döngü içerir. Programı hızlandırmak için Grand Central Dispatch'u kullanmayı düşünüyorum. Denememi http://www.macresearch.org/cocoa-scientists-xxxi-all-aboard-grand-central numaralı telefondan bulduğum bir örnek üzerine kurdum. Ne kodum ne de macresearch'teki örnek makinemde derlenmiştir (MacOSX 10.6.8 Xcode 4.0.2). Yani burada benim kodudur:Bir dispatch_apply (GCD) döngüsünden bir diziye nasıl yazılır?
...
double values[SpaceSize], k1[SpaceSize];
for (int t=1 ; t<Time ; t++) {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//k1
for (int k=0 ; k<SpaceSize ; k++) values[k]=Concentration[k][t-1];
dispatch_apply(SpaceSize, queue,
^(size_t k) {
k1[k]=h * derives(values, SpaceSize, k); //<--error
}
);
...
Bu hata ile kırar:
Semantic Issue: Cannot refer to declaration with a variably modified type inside block
Ben vektörler ile diziler (değerler, k1) yerine çalıştı, ama sonra yerine başka bir hata mesajı alıyorum:
Semantic Issue: Read-only variable is not assignable
Bu noktada, bu hata iletilerinin bana ne anlatmaya çalıştığını bilmediğim bir şey değil. Birilerinin yardım edip edemeyeceğini araştırmak ve sormak için epey zaman harcıyorum. Bunu çözmek için ipuçları veya daha iyi yollar için çok minnettar olurdum.
Çok teşekkürler! Bu sorunu düzeltmek için görünüyor! – Jofro