小编Pip*_*ppi的帖子

如何使用matlab中的if和or语句比较数字?

如果数组的元素b=[1,2,3,4,5]等于1或2或5,我想返回true .我该怎么做?

comparison matlab logic

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

更新:我应该将MPI放在模块或模块的子程序中吗?

更新:我有问题,我不知道它是什么.我有一个MPI_INIT和MPI_FINALIZE测试程序.我有一个包含5个子程序的模块:3个子程序是相关的,独立于2个其他子程序.我想将测试程序中的MPI代码放入此模块中.我将MPI_INIT放在声明变量的模块中以及子例程之前.我使用相同的错误消息获取了一系列错误:

This statement must not appear in the specification part of a module
Run Code Online (Sandbox Code Playgroud)

"MPI_INIT和MPI_FINALIZE应该只调用一次"如何影响Fortran程序,模块和子程序?如果有多个独立的程序,每个调用该模块的子程序多次,我应该把MPI函数和变量放在哪里?

~~~~~~~~~我有一个包含一系列子程序的模块,其中包含我希望并行化的do循环.子例程是公共的,其他程序使用.我应该在子程序之外定义MPI:

module ...
call MPI_INIT
subroutine 1
... (MPI code)
subroutine 2
subroutine 3
MPI_GATHERV
call MPI_FINALIZE
module
Run Code Online (Sandbox Code Playgroud)

或者在每个子程序里面?

module ...
subroutine 1
call MPI_INIT
... (MPI code)
MPI_GATHERV
call MPI_FINALIZE
subroutine 2
call MPI_INIT
... (MPI code)
MPI_GATHERV
call MPI_FINALIZE
subroutine 3
call MPI_INIT
... (MPI code)
MPI_GATHERV
call MPI_FINALIZE
module
Run Code Online (Sandbox Code Playgroud)

我认为遵循粗粒原理的优点是解决方案1.如果一个程序调用子程序1,它还会在子程序之外执行MPI代码吗?

fortran mpi modulo subroutine

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

如何在c中声明一个结构?

我正在关注这个例子,我的程序看起来像这样:

#include <string.h>
#include <stdio.h>
#include <stdlib.h> 

struct Foo
{
    int x;
    int array[100];
}; 


struct Foo f;
f.x = 54;
f.array[3]=9;

void print(void){

    printf("%u", f.x);
}

int main(){
    print();
}
Run Code Online (Sandbox Code Playgroud)

但是,编译时我遇到错误make example_1:

example_1.c:13:1: error: unknown type name 'f'
f.x = 54;
^
example_1.c:13:2: error: expected identifier or '('
f.x = 54;
 ^
example_1.c:14:1: error: unknown type name 'f'
f.array[3]=9;
^
example_1.c:14:2: error: expected identifier or '('
f.array[3]=9;
 ^
4 errors generated.
make: *** [example_1] Error …
Run Code Online (Sandbox Code Playgroud)

c arrays struct initialization

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

当指针未知时,如何在C中释放内存?

我想释放一些我没有指针的内存块.在我的计划,我打电话malloc顺序,希望内存中创建的malloc(1),malloc(4),malloc(5)是连续的.然后,当我只有指针时,我释放这些内存malloc(5).但我想不出如何做到这一点; 我不能简单地创建一个引用ptr [-5]地址的指针,然后释放5个字节的内存?如何才能做到这一点?

#include <string.h>
#include <stdio.h>
#include <stdlib.h> 

int main(){

    malloc(1);
    malloc(4);
    char* ptr = malloc(5);

    free(ptr);
}
Run Code Online (Sandbox Code Playgroud)

c memory pointers memory-management

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

如何在C中使用pthread来防止同时读写磁盘上的文件?

我正在编写一个程序,它有一个写入线程和几个读取线程,用于写入/读取磁盘上的文件。我希望写入/读取不会同时发生。我发现了很多使用pthread互斥锁在写入/读取期间保护内存阵列的示例,例如将受保护的内存数组声明为易失性。

volatile int array[NUMBER];
pthread_mutex_t locks[NUMBER];

pthread_mutex_lock(&locks[index]);
array[acct] -= SOME_NUMBER;
pthread_mutex_unlock(&locks[index]);
Run Code Online (Sandbox Code Playgroud)

但我找不到使用 pthread 保护磁盘上文件的示例。

volatile FILE* array[NUMBER]; ??
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?我希望写/读线程不会同时访问磁盘上的文件。

编辑:我阅读了更多内容,根据这篇文章,多线程似乎不适用于磁盘 IO。

c multithreading mutex file pthreads

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

如何将这个数字转换成c ++中的位?

我希望将0x030C30C3和0x09249249之类的数字转换成位.我怎样才能做到这一点?

c++ bit

-6
推荐指数
1
解决办法
122
查看次数